package com.portal.admin.message.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.portal.admin.base.entity.BaseService;
import com.portal.admin.message.dao.SysMessageDao;
import com.portal.admin.message.entity.SysMessage;
import com.portal.admin.utils.admin.ObjectUtils;
import com.portal.admin.utils.admin.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//消息信息接口类
@Service
public class SysMessageService extends BaseService {

    @Autowired
    private SysMessageDao sysMessageDao;

    //【消息信息】设置查询条件
    private LambdaQueryWrapper<SysMessage> getSysMessageQueryCondition(SysMessage sysMessage) {
        LambdaQueryWrapper<SysMessage> lambdaQuery = this.getBaseQueryCondition(sysMessage);
        //根据创建时间排序
        lambdaQuery.orderByDesc(SysMessage::getCreateDate);
        if (ObjectUtils.isNotNull(sysMessage)) {
            //【主键id】精确查询
            lambdaQuery.eq(StringUtils.isNotEmpty(sysMessage.getId()), SysMessage::getId, sysMessage.getId());
            //【消息类型】精确查询
            lambdaQuery.eq(StringUtils.isNotNull(sysMessage.getMsgType()), SysMessage::getMsgType, sysMessage.getMsgType());
            //【父级id】模糊查询
            lambdaQuery.like(StringUtils.isNotEmpty(sysMessage.getPid()), SysMessage::getPid, sysMessage.getPid());
            //【用户id】模糊查询
            lambdaQuery.like(StringUtils.isNotEmpty(sysMessage.getUserId()), SysMessage::getUserId, sysMessage.getUserId());
            //【关联id】模糊查询
            lambdaQuery.like(StringUtils.isNotEmpty(sysMessage.getRefId()), SysMessage::getRefId, sysMessage.getRefId());
        }
        return lambdaQuery;
    }

    //【消息信息】分页查询
    public IPage<SysMessage> getPage(Page<SysMessage> page, SysMessage sysMessage) {
        LambdaQueryWrapper<SysMessage> lambdaQuery = getSysMessageQueryCondition(sysMessage);
        return sysMessageDao.selectPage(page, lambdaQuery);
    }
    
    //【消息信息】查询列表
    public List<SysMessage> getList(SysMessage sysMessage) {
        LambdaQueryWrapper<SysMessage> lambdaQuery = getSysMessageQueryCondition(sysMessage);
        return sysMessageDao.selectList(lambdaQuery);
    }
    
    //【消息信息】根据id查询
    public SysMessage get(String id) {
        return sysMessageDao.selectById(id);
    }
    
    //【消息信息】新增
    public int insert(SysMessage sysMessage) {
        this.preInsert(sysMessage);
        return sysMessageDao.insert(sysMessage);
    }
    
    //【消息信息】修改
    public int update(SysMessage sysMessage) {
        this.preUpdate(sysMessage);
        return sysMessageDao.updateById(sysMessage);
    }
    
    //【消息信息】删除
    public int delete(String id) {
        return sysMessageDao.deleteById(id);
    }

}